Modbus Rtu Master操作手册


概览

Modbus 本身是一种信息交换的规范,Modbus Rtu 则是透过串口来实现 Modbus 的一种方式,因此所有的信息都是通过串口来传输;Modbus 协议属于 C/S 架构,Modbus Rtu Master 可以读写 Rtu Slave 的地址,实现数据交互;

使用场景

整体架构

注: 本手册中用到的中科时代的软件包,均可以从官网的子页面获取。官网提供的版本可能比本手册中提到的版本更高,一般情况下这不会影响您按照本手册的例子执行相应的操作

产品组件 描述说明
simodbusmaster_1.0.9_amd64.deb Modbus rtu Master RTE 组件
SF4100_ModbusMaster_1.0.0.2.library Modbus rtu Master Metafacture 库文件

安装卸载

安装要求

安装过程

工智机端安装 Modbus Rtu Master RTE 组件

Metafacture 安装 library

description

更新安装

工智机端升级 Modbus Rtu Master RTE 组件

Metafacture 升级 library

description

卸载过程

工智机端卸载 Modbus Rtu Master RTE 组件

卸载 MetaFacture 侧的 Modbus Rtu master library


技术说明

快速启动

本例软、硬件配置

硬件:

  1. SX5100 工智机 MetaOS V24.08.15_SX5

  2. Win10 PC

软件:

  1. MetaFacutre V1.0.6.3

  2. Modbus slave 从站工具

本例实验要求及原理

实验原理

本例实验操作步骤

主站初始化串口实验步骤如下

读多线圈的实验步骤如下:

读取离散输入的实验步骤如下:

读取保持寄存器的实验步骤如下:

读取输入寄存器的实验步骤如下:

写多线圈的实验步骤如下:

写多保持寄存器的实验步骤如下:

写单线圈的实验步骤如下:

写单个保持寄存器的实验步骤如下:

实验注意点

1、实验中用到的从站 COM 口以实际为准;

2、实验中使用的从站案例如下:


功能介绍

主站配置初始化串口

功能块 FB_MBRtuSerialPortInit 介绍

参数介绍

参数名称 参数类型 描述
PortName STRING 串口号
BaudRate UINT 波特率设置,常用的波特率类型如 9600、38400、115200 均支持
DataBits UINT 数据位
StopBits UINT 停止位
Parity STRING 校验位
Execute BOOL 触发执行
Timeout TIME 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置读取从站多线圈

功能块 FB_MBRtuReadCoils 介绍

参数介绍

参数名称 参数类型 描述
UnitID UINT 从站的 ID
Quantity UINT 读取的线圈位数
MBAddr WORD 读取的线圈起始位置
cbLength UINT 存储读取的字节大小
pMemoryAddr POINTER TO BYTE 要读的存放数据的存放地址
Execute BOOL 触发读取动作
tTimeout Time 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置读取从站输入寄存器

功能块 FB_MBRtuReadInputRegs 介绍

参数介绍

参数名称 参数类型 描述
UnitID UINT 从站的 ID
Quantity UINT 读取的输入寄存器位数,一次最多读取 125 位
MBAddr UINT 读取的输入寄存器起始位置
cbLength UINT 存储读取的字节大小
pMemoryAddr POINTER TO BYTE 要读的存放数据的存放地址
Execute BOOL 触发读取动作
tTimeout Time 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置读取从站离散输入

功能块 FB_MBRtuReadInputs 介绍

参数介绍

参数名称 参数类型 描述
UnitID UINT 从站的 ID
Quantity UINT 读取的离散输入位数
MBAddr UINT 读取的离散输入起始位置
cbLength UINT 存储读取的字节大小
pMemoryAddr POINTER TO BYTE 要读的存放数据的存放地址
Execute BOOL 触发读取动作
tTimeout Time 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置读取从站保持寄存器

功能块 FB_MBRtuReadRegs 介绍

参数介绍

参数名称 参数类型 描述
UnitID UINT 从站的 ID
Quantity UINT 读取的保持寄存器位数,一次最多读取 125 位
MBAddr UINT 读取的保持寄存器起始位置
cbLength UINT 存储读取的字节大小
pMemoryAddr POINTER TO BYTE 要读的存放数据的存放地址
Execute BOOL 触发读取动作
tTimeout Time 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置写从站多线圈

功能块 FB_MBRtuWriteCoils 介绍

参数介绍

参数名称 参数类型 描述
UnitID UINT 从站的 ID
Quantity WORD 要写入的线圈位数
MBAddr WORD 要写入的线圈起始位置
cbLength UINT 存储写入的字节大小
pMemoryAddr POINTER TO BYTE 要写入的数据的地址
Execute BOOL 触发写入动作
tTimeout Time 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置写从站多保持寄存器

功能块 FB_MBRtuWriteRegs 介绍

参数介绍

参数名称 参数类型 描述
UnitID UINT 从站的 ID
Quantity UINT 要写入的保持寄存器位数
MBAddr UINT 要写入的保持寄存器的起始位置
pMemoryAddr POINTER TO WORD 要写入的数据的地址
Execute BOOL 触发写入动作
tTimeout Time 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置写从站单线圈

功能块 FB_MBRtuWriteSingleCoil 介绍

参数介绍

参数名称 参数类型 描述
UnitID UINT 从站的 ID
MBAddr WORD 要写入的线圈位置
Value BOOL 要写入的线圈值
Execute BOOL 触发写入动作
tTimeout Time 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置写从站单保持寄存器

功能块 FB_MBRtuWriteSingleReg 介绍

参数介绍

参数名称 参数类型 描述
UnitID UINT 从站的 ID
MBAddr WORD 要写入的保持寄存器位置
Value WORD 要写入的保持寄存器值
Execute BOOL 触发写入动作
tTimeout Time 超时
参数名称 参数类型 描述
BUSY BOOL 功能块激活时设置,直到确认接收
Error BOOL 如果命令在传输过程中出现错误,则设置 true 直到 bBusy 输出被重置
ErrorId UINT 当 bError 输出被设置,提供错误号

主站配置连接 32 从站


错误处理

  1. 如果串口不通或者主站请求的从站地址不存在,工程运行后功能块的 Error 会置 True